Methods, apparatuses, and computer program products for facilitating searching

ABSTRACT

Methods, apparatuses, and computer program products are provided for providing facilitating searching. A method may include determining a search term. The method may further include searching a database having at least one codified terminology set. The searching may be performed based at least in part upon the search term and historical search data. The method may additionally include determining one or more search results from the search. Each search result may include a codified term from the at least one codified terminology set. Corresponding apparatuses and computer program products are also provided.

TECHNOLOGICAL FIELD

Embodiments of the present invention relate generally to searchtechnology and, more particularly, relate to methods, apparatuses, andcomputer program products for facilitating searching.

BACKGROUND

As a result of improving technology and, in some instances, providermandates, usage of electronic medical records is becoming increasinglyprevalent. Electronic medical records provide portable patient medicalrecords that may be easily exchanged among authorized clinicians andinsurance providers. In this regard, electronic medical records aredesigned to be accessed and/or distributed over computer networks.Further, in order to facilitate consistency across medical records,standardized codified terminology sets are used to fill out patienthistory and other information in electronic medical records. Thesecodified terminology sets provide standardized codes for variousdiseases, symptoms, treatments, medications, and the like such thatpatient medical records may be documented in a manner to facilitateuniversal understanding of the patient medical record. However, aclinician or other individual filling out an electronic medical recordmay not have memorized the codes of a codified terminology set. Further,the time required to look up an appropriate code may impose a burden forbusy clinicians.

BRIEF SUMMARY OF SOME EXAMPLES OF THE INVENTION

Methods, apparatuses, and computer program products are thereforeprovided for facilitating searching. Some example methods, apparatuses,and computer program products are provided for facilitating searchingcodified terminology sets. These methods, apparatuses, and computerprogram products may provide several advantages to clinicians or otherusers searching for an appropriate codified term in a codifiedterminology set. In this regard, example embodiments allow users tosearch a codified terminology set using user-friendly search terms toidentify an appropriate codified term corresponding to the search term.Example embodiments may be particularly beneficial for searchingcodified clinical terminology sets in a medical setting. However,example embodiments may be applied to searching any codified terminologyset.

Some example embodiments facilitate searching codified terminology setsby using historical search data to improve search results. In thisregard, historical correlations between search terms and selected searchresults may be used to identify a more relevant set of search resultsfor a particular search term. Such embodiments may be particularlybeneficial in instances where a codified term has an association, be ita formalized association or an informal association, with several commonterms. Further, some example embodiments constrain a codifiedterminology set to a subset of the codified terms in the codifiedterminology set prior to performing a search for a search term based onsearch context information that may limit the number of potentiallyrelevant codified terms. Accordingly, search time and search processingoverhead may be improved by limiting the number of codified termsincluded in the search.

In a first example embodiment, a method for facilitating searchingcodified terminology sets is provided. The method of this embodimentcomprises determining a search term. The method of this embodimentfurther comprises searching a database comprising at least one codifiedterminology set based at least in part upon the search term andhistorical search data. The historical search data of this embodimentcomprises correlations between historical search terms and correspondingselected search results. The method of this embodiment additionallycomprises determining one or more search results from the search. Eachsearch result of this embodiment comprises a codified term from the atleast one codified terminology set.

In another example embodiment, an apparatus for facilitating searchingcodified terminology sets is provided. The apparatus of this embodimentcomprises at least one processor. The at least one processor isconfigured to cause the apparatus of this embodiment to determine asearch term. The at least one processor is further configured to causethe apparatus of this embodiment to search a database comprising atleast one codified terminology set based at least in part upon thesearch term and historical search data. The historical search data ofthis embodiment comprises correlations between historical search termsand corresponding selected search results. The at least one processor isadditionally configured to cause the apparatus of this embodiment todetermine one or more search results from the search. Each search resultof this embodiment comprises a codified term from the at least onecodified terminology set.

In another example embodiment, a computer program product forfacilitating searching codified terminology sets is provided. Thecomputer program product of this embodiment includes at least onecomputer-readable storage medium having computer-readable programinstructions stored therein. The program instructions of this embodimentcomprise program instructions configured to determine a search term. Theprogram instructions of this embodiment further comprise programinstructions configured to search a database comprising at least onecodified terminology set based at least in part upon the search term andhistorical search data. The historical search data of this embodimentcomprises correlations between historical search terms and correspondingselected search results. The program instructions of this embodimentadditionally comprise program instructions configured to determine oneor more search results from the search. Each search result of thisembodiment comprises a codified term from the at least one codifiedterminology set.

In another example embodiment, an apparatus for facilitating searchingcodified terminology sets is provided. The apparatus of this embodimentcomprises means for determining a search term. The apparatus of thisembodiment further comprises means for searching a database comprisingat least one codified terminology set based at least in part upon thesearch term and historical search data. The historical search data ofthis embodiment comprises correlations between historical search termsand corresponding selected search results. The apparatus of thisembodiment additionally comprises means for determining one or moresearch results from the search. Each search result of this embodimentcomprises a codified term from the at least one codified terminologyset.

The above summary is provided merely for purposes of summarizing someexample embodiments of the invention so as to provide a basicunderstanding of some aspects of the invention. Accordingly, it will beappreciated that the above described example embodiments are merelyexamples and should not be construed to narrow the scope or spirit ofthe invention in any way. It will be appreciated that the scope of theinvention encompasses many potential embodiments, some of which will befurther described below, in addition to those here summarized.

BRIEF DESCRIPTION OF THE DRAWING(S)

Having thus described embodiments of the invention in general terms,reference will now be made to the accompanying drawings, which are notnecessarily drawn to scale, and wherein:

FIG. 1 illustrates an apparatus for facilitating searching according toan example embodiment of the present invention;

FIG. 2 illustrates a system for facilitating searching according to anexample embodiment of the present invention;

FIG. 3 illustrates a system for facilitating searching according to anexample embodiment of the present invention;

FIG. 4 illustrates a flowchart according to an example method forfacilitating searching codified terminology sets according to an exampleembodiment of the invention;

FIG. 5 illustrates a flowchart according to an example method forfacilitating searching codified terminology sets according to an exampleembodiment of the invention; and

FIG. 6 illustrates a flowchart according to an example method forupdating historical search data according to an example embodiment ofthe invention.

DETAILED DESCRIPTION

Some embodiments of the present invention will now be described morefully hereinafter with reference to the accompanying drawings, in whichsome, but not all embodiments of the invention are shown. Indeed, theinvention may be embodied in many different forms and should not beconstrued as limited to the embodiments set forth herein; rather, theseembodiments are provided so that this disclosure will satisfy applicablelegal requirements. Like reference numerals refer to like elementsthroughout.

FIG. 1 illustrates a search apparatus 102 for facilitating searchingaccording to an example embodiment of the present invention. It will beappreciated that the search apparatus 102 is provided as an example ofone embodiment of the invention and should not be construed to narrowthe scope or spirit of the invention in any way. In this regard, thescope of the disclosure encompasses many potential embodiments inaddition to those illustrated and described herein. As such, while FIG.1 illustrates one example of a configuration of a search apparatus forfacilitating searching, numerous other configurations may also be usedto implement embodiments of the present invention.

The search apparatus 102 may be embodied as a server, desktop computer,laptop computer, mobile terminal, mobile computer, mobile phone, mobilecommunication device, audio/video player, television device, networknode, multiple computing devices in communication with each other, anycombination thereof, and/or the like. In an example embodiment thesearch apparatus 102 includes various means for performing the variousfunctions described herein. These means may include, for example, one ormore of a processor 120, memory 122, communication interface 124, userinterface 126, or search unit 128 for performing the various functionsherein described. The means of the search apparatus 102 as describedherein may be embodied as, for example, circuitry, hardware elements(e.g., a suitably programmed processor, combinational logic circuit,and/or the like), a computer program product comprisingcomputer-readable program instructions (e.g., software or firmware)stored on a computer-readable medium (e.g. memory 122) that isexecutable by a suitably configured processing device (e.g., theprocessor 120), or some combination thereof.

The processor 120 may, for example, be embodied as various meansincluding one or more microprocessors with accompanying digital signalprocessor(s), one or more processor(s) without an accompanying digitalsignal processor, one or more coprocessors, one or more multi-coreprocessors, one or more controllers, processing circuitry, one or morecomputers, various other processing elements including integratedcircuits such as, for example, an ASIC (application specific integratedcircuit) or FPGA (field programmable gate array), or some combinationthereof. Accordingly, although illustrated in FIG. 1 as a singleprocessor, in some embodiments the processor 120 comprises a pluralityof processors. The plurality of processors may be embodied on a singlecomputing device or may be distributed across a plurality of computingdevices collectively configured to function as the search apparatus 102.The plurality of processors may be in operative communication with eachother and may be collectively configured to perform one or morefunctionalities of the search apparatus 102 as described herein. In anexample embodiment, the processor 120 is configured to executeinstructions stored in the memory 122 or otherwise accessible to theprocessor 120. These instructions, when executed by the processor 120,may cause the search apparatus 102 to perform one or more of thefunctionalities of the search apparatus 102 as described herein. Assuch, whether configured by hardware or software methods, or by acombination thereof, the processor 120 may comprise an entity capable ofperforming operations according to embodiments of the present inventionwhile configured accordingly. Thus, for example, when the processor 120is embodied as an ASIC, FPGA or the like, the processor 120 may comprisespecifically configured hardware for conducting one or more operationsdescribed herein. Alternatively, as another example, when the processor120 is embodied as an executor of instructions, such as may be stored inthe memory 122, the instructions may specifically configure theprocessor 120 to perform one or more algorithms and operations describedherein.

The memory 122 may include, for example, volatile and/or non-volatilememory. Although illustrated in FIG. 1 as a single memory, the memory122 may comprise a plurality of memories. The plurality of memories maybe embodied on a single computing device or distributed across aplurality of computing devices. The memory 122 may comprise volatilememory, non-volatile memory, or some combination thereof. In thisregard, the memory 122 may comprise, for example, a hard disk, randomaccess memory, cache memory, flash memory, a compact disc read onlymemory (CD-ROM), digital versatile disc read only memory (DVD-ROM), anoptical disc, circuitry configured to store information, or somecombination thereof. The memory 122 may be configured to storeinformation, data, applications, instructions, or the like for enablingthe search apparatus 102 to carry out various functions in accordancewith example embodiments of the present invention. For example, in atleast some embodiments, the memory 122 is configured to buffer inputdata for processing by the processor 120. Additionally or alternatively,in at least some embodiments, the memory 122 is configured to storeprogram instructions for execution by the processor 120. The memory 122may store information in the form of static and/or dynamic information.This stored information may be stored and/or used by the search unit 128during the course of performing its functionalities.

The communication interface 124 may be embodied as any device or meansembodied in circuitry, hardware, a computer program product comprisingcomputer readable program instructions stored on a computer readablemedium (e.g., the memory 122) and executed by a processing device (e.g.,the processor 120), or a combination thereof that is configured toreceive and/or transmit data from/to another device, such as, forexample, a server, a user terminal (e.g., a user terminal 206illustrated in FIG. 2), a data source (e.g., the data source 306illustrated in FIG. 3), and/or the like. In at least one embodiment, thecommunication interface 124 is at least partially embodied as orotherwise controlled by the processor 120. In this regard, thecommunication interface 124 may be in communication with the processor120, such as via a bus. The communication interface 124 may include, forexample, an antenna, a transmitter, a receiver, a transceiver and/orsupporting hardware or software for enabling communications with anothercomputing device. The communication interface 124 may be configured toreceive and/or transmit data using any protocol that may be used forcommunications between computing devices. The communication interface124 may additionally be in communication with the memory 122, userinterface 126, and/or search unit 128, such as via a bus.

The user interface 126 may be in communication with the processor 120 toreceive an indication of a user input and/or to provide an audible,visual, mechanical, or other output to a user. As such, the userinterface 126 may include, for example, a keyboard, a mouse, a joystick,a display, a touch screen display, a microphone, a speaker, and/or otherinput/output mechanisms. In embodiments wherein the search apparatus 102is embodied as a server, aspects of the user interface 126 may bereduced or the user interface 126 may even be eliminated. As anotherexample embodiment where the search apparatus 102 is embodied as aserver, at least some aspects of the user interface 126 may be embodiedon an apparatus used by an end user that is in communication with thesearch apparatus 102, such as for example, a user terminal 206illustrated in FIG. 2. The user interface 126 may provide means for auser to enter a search term, view search results, select a searchresult, and/or the like. The user interface 126 may be in communicationwith the memory 122, communication interface 124, and/or search unit128, such as via a bus.

The search unit 128 may be embodied as various means, such as circuitry,hardware, a computer program product comprising computer readableprogram instructions stored on a computer readable medium (e.g., thememory 122) and executed by a processing device (e.g., the processor120), or some combination thereof and, in one embodiment, is embodied asor otherwise controlled by the processor 120. In embodiments wherein thesearch unit 128 is embodied separately from the processor 120, thesearch unit 128 may be in communication with the processor 120. Thesearch unit 128 may further be in communication with one or more of thememory 122, communication interface 124, or user interface 126, such asvia a bus.

FIG. 2 illustrates a system 200 for facilitating searching according toan example embodiment of the present invention. The system 200 comprisesa search apparatus 202 and one or more user terminals 206 configured tocommunicate over a network 204. The search apparatus 202 may, forexample, comprise an embodiment of the search apparatus 102 wherein thesearch apparatus 102 is embodied as one or more servers, one or morenetwork nodes, or the like that is configured to provide search servicesto a user of a remote user terminal. The network 204 may comprise awireless network (e.g., a cellular network, wireless local area network,wireless personal area network, wireless metropolitan area network,and/or the like), a wireline network, or some combination thereof, andin some embodiments comprises the internet. The user terminals 206 maycomprise any device configured for use by a user to access searchservices provided by the search apparatus 202 over the network 204. Inthis regard, a user terminal 206 may be embodied as a desktop computer,laptop computer, mobile terminal, mobile computer, mobile phone, mobilecommunication device, audio/video player, television device, anycombination thereof, and/or the like.

In the example system illustrated in FIG. 2, at least some aspects ofthe user interface 116 may be embodied on the user terminal 206. Forexample, the search apparatus 202 may be configured to provide a networkservice, such as a web service, for providing codified terminologysearch services to one or more user terminals 206. In this regard, thesearch apparatus 202 (e.g., search unit 128) may be configured toprovide a search interface for facilitating searching codifiedterminology sets to a user terminal 206 such that the graphical userinterface is caused to be displayed on a display operably connected tothe user terminal 206. A user of the user terminal 206 may interact withthe graphical user interface to input a search term, view searchresults, select a search result, and/or the like. Therefore, it will beappreciated that where the search unit 128 is described to provide asearch interface, search results, and/or other data, it will beappreciated that the search unit 128 may be configured to provide databy causing the data to be displayed on a display operably connected tothe search apparatus 102 and/or may be configured to provide the data bycausing transmission of the data to a user terminal(s) 206 such that thedata may be displayed or otherwise utilized by the receiving userterminal(s) 206.

The search apparatus 202 (e.g., search unit 128) may be configured toreceive at least an indication of a search term input by a user of auser terminal 206 and determine the input search term. Similarly, thesearch apparatus 202 (e.g., search unit 128) may be configured toreceive an indication of a search result selected by the user of a userterminal 206 and determine the selected search result in accordance withone or more example embodiments described further herein. Accordingly,it will be appreciated that where the search unit 128 is described to beconfigured to determine a user input and/or to make a determinationbased on user input, the search unit 128 may be configured make thedetermination based on user input to a user interface 116 of the searchapparatus 102 or may be configured to make the determination based on auser input to a remote user terminal, an indication of which istransmitted to the search apparatus 102 over a network.

FIG. 3 illustrates a system 300 for facilitating searching according toan example embodiment of the present invention. The system 300 comprisesa search apparatus 302 and one or more data sources 306 configured tocommunicate over a network 304. The search apparatus 302 may, forexample, comprise an embodiment of the search apparatus 102. The network304 may comprise a wireless network (e.g., a cellular network, wirelesslocal area network, wireless personal area network, wirelessmetropolitan area network, and/or the like), a wireline network, or somecombination thereof, and in some embodiments comprises the internet. Insome embodiments, the network 304 may comprise the network 204. In thisregard, although not illustrated in FIG. 3, the system 300 may furthercomprise one or more user terminals 206 as illustrated and described inconnection with the system 200 of FIG. 2.

A data source 306 may comprise any computing device comprising a memoryconfigured to store a codified terminology set, historical search data,and/or other data such that it is accessible by the search apparatus 302over the network 304. In this regard, a data source 306 may comprise,for example, a network attached storage device, a server, a desktopcomputer, laptop computer, mobile terminal, mobile computer, mobilephone, mobile communication device, audio/video player, any combinationthereof, and/or the like. It will therefore be appreciated that when thesearch unit 128 is described herein to search, access, or otherwise usea database, codified terminology set, historical search data, and/orother data, such as from the memory 122, the search unit 128 may beconfigured to access the data from the memory 122 and/or from a datasource 306.

In some embodiments, the search unit 128 is configured to provide asearch interface for facilitating searching one or more codifiedterminology sets. The search interface may, for example, comprise adedicated search interface configured solely for searching codifiedterminology sets and/or other data. As another example, the searchinterface may comprise a component of or may be otherwise integratedinto a user interface of another application. In this regard, the searchinterface may, for example, be integrated into a form field for dataentry, such as a form field for entering data into an electronic medicalrecord. Regardless of implementation, the search interface may comprisean input field or other means facilitating entry or selection of asearch term by a user.

The search unit 128 may accordingly be configured to determine a searchterm entered or otherwise selected by a user via a search interface. Thesearch term may comprise a word, multiple words, phrase, or merely justone or more characters (e.g., a portion of a word or phrase). The searchunit 128 may be configured to determine a search term in response to auser command signaling that entry or selection of a search term iscomplete. For example, a user may select an “enter” or “search” buttonof a search interface.

Additionally or alternatively, the search unit 128 may be configured todetermine a search term as the user is entering a search term. Thus, forexample, the search unit 128 may be configured to determine and update asearch term character by character as the user enters the search term.This real time character by character determination of a search term maybe used by the search unit 128 to implement features such as anauto-complete feature to automatically complete a search term for a userand/or to suggest a search term for the user based on the charactersentered by the user. In order to implement the auto-complete feature,the search unit 128 may utilize a dictionary, word database, historicalsearch data comprising historical search terms previously determined bythe search unit 128, and/or the like. The real time character bycharacter determination of a search term may further be used by thesearch unit 128 to automatically search and update search results inresponse to each character entered.

The search unit 128 may be configured to examine a determined searchterm to determine whether there is a potential error in the search term.An example of such a potential error is a spelling error. As anotherexample, a potential error in a search term may comprise use of anacronym, slang term, and/or the like where a related term (e.g., anexpanded acronym or proper term) may be more appropriate for using asthe basis of a search. In such embodiments when the search unit 128determines there is a potential error, the search unit 128 may determineone or more suggested search terms to use in place of the search termhaving the potential error. The search unit 128 may automatically selectone of the determined suggested search term to use as a replacementsearch term for the basis of a search. Alternatively, the search unit128 may provide the suggested search terms to the user and determine auser selection of a suggested search term. The user selected suggestedsearch term may then be used as a replacement search term for the basisof a search.

As a further example, the search unit 128 may be configured to determinea search term automatically without requiring user input. In thisregard, the search unit 128 may be configured to determine a search termby determining search context information and generating one or moresearch terms based on the search context information. The search contextinformation may be determined based on any context associated with asituation in which determination and/or selection of a codified term isneeded. For example, determination and selection of a codified term maybe required for completion of a form in a medical record. Accordingly,context information may be determined by the search unit 128 based onthe context of the medical record. For example, context information maycomprise an identity of a treating physician, a medical discipline(e.g., area of practice) of the treating physician, a clinicianidentity, a clinician area of practice, a patient name, an ailment ofthe patient, a treatment administered to the patient, a patient sex, apatient age, patient medical history, insurance provider information,and/or the like.

The search unit 128 may accordingly be configured to derive a searchcontext and generate a search term from the search context that may beused for performing a search. In this regard, the search unit 128 may beconfigured to automatically define search parameters based on adetermined search context and suggest one or more search results withoutrequiring user input of a search term.

The search unit 128 is further configured in some example embodiments tosearch a database comprising at least one codified terminology set basedon a determined search term. A codified terminology set may comprise anyset of codes, terms, identifiers, and/or the like that are mapped todata, such as a verbose description. The at least one codifiedterminology set may, for example, comprise one or more codified clinicalterminology sets. In this regard, a clinical terminology set maycomprise a set of codes mapped to respective diseases, symptoms,treatments, medications, and/or the like. Examples of such codifiedclinical terminology sets include the International Classification ofDiseases (ICD) (e.g., ICD-9, ICD-10, and/or any previous or subsequentversions of ICD), various versions of Logical Obseration IdentifiersNames and Codes (LOINC), Systemized Nomenclature of Medicine—ClinicalTerms (SNOMED-CT), International Classification for Nursing Practice(ICNP), International Code for Functioning, Disability, and Health(ICF), and/or the like. It will be appreciated, however, thatembodiments of the invention are not limited to searching codifiedclinical terminology sets and may be applied to any codified terminologyset. Accordingly, it will be appreciated that examples described hereinwith reference to clinical terminology sets and searches performed in aclinical or other medical context are provided merely for purposes ofexample and not by way of limitation.

Accordingly, the search unit 128 may be configured to perform a searchby identifying codified terms having a description corresponding to asearch term. In order to improve search results, the search unit 128 maybe configured to further base a search on historical search data. Thehistorical search data may be maintained by the search unit 128 and maycomprise correlations between historical search terms and correspondingselected search results. The search unit 128 may use historical searchdata to facilitate the search and/or improve search results in a varietyof ways. For example, the search unit 128 may be configured to narrow apool of search results (e.g., to the most likely/popular search resultsfor a search term). Thus, if a relatively large number of codified terms(e.g., the descriptions associated with the codified terms) match asearch term, the search unit 128 may determine previously selectedsearch results corresponding to the search term to determine the mostlikely search result(s).

As another example, the search unit 128 may be configured to usehistorical search data to enhance search results to provide searchresults that may be related to a search term even if the search term isnot found in a description of the search result. For example, a searchterm may comprise an alternate term, abbreviation, slang, or the like.Accordingly, if the search term has been used as a basis of one or moreprevious searches, the search unit 128 may be configured to determinesearch results that were previously selected from results of theprevious searches using the search term and determine one or more ofthose previously selected search results as results of a present search.

In one example embodiment, the search unit 128 may be configured to usea user's own personal historical search data for facilitating searchinga codified terminology set. In this regard, the search unit 128 maydetermine an identity of a user performing a search and then access thedetermined user's search history. Thus, user search patterns may be usedto determine search results particularly targeted to the user.

Each search result determined by the search unit 118 may comprise acodified term. The search unit 118 may be configured to provide at leasta portion of the search results to enable user selection of a searchresult. In providing a search result, the search unit 118 may providethe codified term. Additionally or alternatively, the search unit 118may provide at least a portion of a description associated with thecodified term. Providing the description may facilitate easier userreview and understanding of a search result.

A user may select a search result from search results presented in thesearch interface. The search unit 118 may accordingly be furtherconfigured to determine the selected search result. The search unit 118may perform a variety of actions depending on the implementation of thesearch interface used to perform the search. For example, if the searchinterface comprises or is associated with a data record, form field(e.g., in an electronic medical record), or the like, the search unit118 may automatically populate the record or field with the selectedsearch result. The search unit 118 may be configured to additionally oralternatively update historical search data based on the selected searchresult. In this regard, the search unit 118 may be configured to updatethe historical search data to reflect a correlation between the selectedsearch result and the search term used in the search that resulted inthe selected search result.

In one example embodiment the search unit 118 is configured to constrainthe codified terminology set(s) searched in a search to a subset of thecodified terminology set(s). In this regard, the search unit 118 may beconfigured to determine search context information. The search unit 118may use the determined search context information to determine a subsetof the codified terminology set(s) in a database to be searched suchthat only a subset comprising potentially relevant codified terms issearched. In this regard, there may be codified terms contained in thedatabase that may not have any potential relevance, such as due to acharacteristic of a user requesting a search. As an example, acardiologist may perform a search. Accordingly, codified terms relatedto medical disciplines other than cardiology may not be relevant. Thus,in this example, the search unit 118 may be configured to determinebased on the search context (e.g., that the user is a cardiologist) asubset of the codified terminology set(s) in the database that comprisesonly those codified terms having a potential relevance to the searchcontext (e.g., codified terms having a potential relevance tocardiology). As another example, if a search is being performed to fillin data fields in an electronic medical record, characteristics of apatient associated with the electronic medical record may be taken intoaccount. Thus, if a patient is a male, the search unit 118 may beconfigured to determine a subset comprising only codified terms relevantto a male patient. Similarly, patient age brackets, medical history(e.g., disease history), family medical history, and/or the like may betaken into account. As a further example, if a search is being performedto fill in data fields of a record to be filed with or otherwisecommunicated to an insurance provider having a specified reportingstandard, the search unit 118 may be configured to determine a subsetcomprising only codified terms that are accepted by the particularinsurance provider.

It will be appreciated that the above provided example search contextsand criteria for determining a subset of a codified terminology set(s)are provided merely for purposes of example. The search contextinformation may comprise information about any context associated withthe search. Examples of search context information in addition to thosedescribed above include a user identity, a physician identity, physicianarea of practice, a clinician identity, a clinician area of practice, aninsurance provider, a patient identity, a clinical history of a patient,and/or the like.

In addition to using historical search data as a basis of a search todetermine search results, may use to provide more meaning to determinedsearch results. In this regard, the search unit 128 may be configured touse historical search data and/or other criteria to determine arelevance value for a search result. The search unit 128 may usedetermined relevance values of search results as criteria for providingthe search results. For example, the search unit 128 may provide searchresults in an order based on their respective relevance values. Asanother example, the search unit 128 may be configured to provide onlysearch results having a relevance value meeting a predefined thresholdrelevance value. Thus search results that do not meet a relevancethreshold may be eliminated so as to reduce the quantity of resultspresented to a user. As a further example, the search unit 128 may beconfigured to provide no more than a predefined number of the mostrelevant search results (e.g., the 10 most relevant search results) asindicated by determined relevance values. If a relevance value of asearch result satisfies a predefined threshold, the search unit 128 maybe configured to automatically select the search result withoutrequiring user selection of the search result. In this regard, if thereis a high enough confidence that a particular search result is thesearch result that a user is looking for, the search unit 128 mayautomatically select that search result for the user without providingany other search results.

FIG. 4 illustrates a flowchart according to an example method forfacilitating searching codified terminology sets according to an exampleembodiment of the invention. The operations illustrated in and describedwith respect to FIG. 4 may, for example, be performed by, with theassistance of, and/or under the control of one or more of the processor120, memory 122, communication interface 124, user interface 126, orsearch unit 128. Operation 400 may comprise determining a search term.Operation 410 may comprise searching a database comprising at least onecodified terminology set based on the search term and historical searchdata. Operation 420 may comprise determining one or more search resultsresulting from the search.

FIG. 5 illustrates a flowchart according to an example method forfacilitating searching codified terminology sets according to an exampleembodiment of the invention. The operations illustrated in and describedwith respect to FIG. 5 may, for example, be performed by, with theassistance of, and/or under the control of one or more of the processor120, memory 122, communication interface 124, user interface 126, orsearch unit 128. Operation 500 may comprise determining search contextinformation associated with a search. Operation 510 may comprisedetermining a subset of at least one codified terminology set based onthe determined search context information. Operation 520 may comprisedetermining a search term for the search. Operation 530 may comprisesearching the determined subset based on the search term and historicalsearch data. Operation 540 may comprise determining one or more searchresults resulting from the search.

FIG. 6 illustrates a flowchart according to an example method forupdating historical search data according to an example embodiment ofthe invention. The operations illustrated in and described with respectto FIG. 6 may, for example, be performed by, with the assistance of,and/or under the control of one or more of the processor 120, memory122, communication interface 124, user interface 126, or search unit128. Operation 600 may comprise providing one or more search resultsdetermined based on a search term and historical search data. Operation610 may comprise determining a selected search result. Operation 620 maycomprise updating the historical search data based on the search termand the selected search results.

FIGS. 4-6 each illustrate a flowchart of a system, method, and computerprogram product according to example embodiments of the invention. Itwill be understood that each block or step of the flowcharts, andcombinations of blocks in the flowcharts, may be implemented by variousmeans, such as hardware and/or a computer program product comprising oneor more computer-readable mediums having computer readable programinstructions stored thereon. For example, one or more of the proceduresdescribed herein may be embodied by computer program instructions of acomputer program product. In this regard, the computer programproduct(s) which embody the procedures described herein may be stored byone or more memory devices of a server, desktop computer, laptopcomputer, mobile computer, or other computing device (e.g., the searchapparatus 102, user terminal 206, data source 306, combination thereof,and/or the like) and executed by a processor (e.g., the processor 120)in the computing device. In some embodiments, the computer programinstructions comprising the computer program product(s) which embody theprocedures described above may be stored by memory devices of aplurality of computing devices. As will be appreciated, any suchcomputer program product may be loaded onto a computer or otherprogrammable apparatus to produce a machine, such that the computerprogram product including the instructions which execute on the computeror other programmable apparatus creates means for implementing thefunctions specified in the flowchart block(s) or step(s). Further, thecomputer program product may comprise one or more computer-readablememories on which the computer program instructions may be stored suchthat the one or more computer-readable memories can direct a computer orother programmable apparatus to function in a particular manner, suchthat the computer program product comprises an article of manufacturewhich implements the function specified in the flowchart block(s) orstep(s). The computer program instructions of one or more computerprogram products may also be loaded onto a computer or otherprogrammable apparatus to cause a series of operational steps to beperformed on the computer or other programmable apparatus to produce acomputer-implemented process such that the instructions which execute onthe computer or other programmable apparatus provide steps forimplementing the functions specified in the flowchart block(s) orstep(s).

Accordingly, blocks or steps of the flowcharts support combinations ofmeans for performing the specified functions and combinations of stepsfor performing the specified functions. It will also be understood thatone or more blocks or steps of the flowcharts, and combinations ofblocks or steps in the flowcharts, may be implemented by special purposehardware-based computer systems which perform the specified functions orsteps, or combinations of special purpose hardware and computer programproduct(s).

The above described functions may be carried out in many ways. Forexample, any suitable means for carrying out each of the functionsdescribed above may be employed to carry out embodiments of theinvention. In one embodiment, a suitably configured processor mayprovide all or a portion of the elements of the invention. In anotherembodiment, all or a portion of the elements of the invention may beconfigured by and operate under control of a computer program product.The computer program product for performing the methods of embodimentsof the invention includes a computer-readable storage medium, such asthe non-volatile storage medium, and computer-readable program codeportions, such as a series of computer instructions, embodied in thecomputer-readable storage medium.

As such, then, some embodiments of the invention provide severaladvantages to clinicians or other users searching for an appropriatecodified term in a codified terminology set. In this regard, exampleembodiments allow users to search a codified terminology set usinguser-friendly search terms to identify an appropriate codified termcorresponding to the search term. Example embodiments may beparticularly beneficial for searching codified clinical terminology setsin a medical setting. However, example embodiments may be applied tosearching any codified terminology set.

Some example embodiments facilitate searching codified terminology setsby using historical search data to improve search results. In thisregard, historical correlations between search terms and selected searchresults may be used to identify a more relevant set of search resultsfor a particular search term. Such embodiments may be particularlybeneficial in instances where a codified term has an association, be ita formalized association or an informal association, with several commonterms. Further, some example embodiments constrain a codifiedterminology set to a subset of the codified terms in the codifiedterminology set prior to performing a search for a search term based onsearch context information that may limit the number of potentiallyrelevant codified terms. Accordingly, search time and search processingoverhead may be improved by limiting the number of codified termsincluded in the search.

Although several example embodiments have been described in the contextof searching codified terminology sets, it will be appreciated thatexample embodiments are applicable to searching data, vocabularies,and/or the like that are not codified terminology sets. In this regard,example embodiments may be applied for facilitating searchingconstrained vocabularies. As another example, example embodiments may beapplied for searching a database, aggregation of data, and/or the like,based on historical search data.

Many modifications and other embodiments of the inventions set forthherein will come to mind to one skilled in the art to which theseinventions pertain having the benefit of the teachings presented in theforegoing descriptions and the associated drawings. Therefore, it is tobe understood that the embodiments of the invention are not to belimited to the specific embodiments disclosed and that modifications andother embodiments are intended to be included within the scope of theappended claims. Moreover, although the foregoing descriptions and theassociated drawings describe example embodiments in the context ofcertain example combinations of elements and/or functions, it should beappreciated that different combinations of elements and/or functions maybe provided by alternative embodiments without departing from the scopeof the appended claims. In this regard, for example, differentcombinations of elements and/or functions than those explicitlydescribed above are also contemplated as may be set forth in some of theappended claims. Although specific terms are employed herein, they areused in a generic and descriptive sense only and not for purposes oflimitation.

What is claimed is:
 1. A method for facilitating searching codifiedterminology sets, the method comprising: determining a search term forperforming a current search operation; determining search contextinformation other than the search term for the current search operation,the search context information comprising one or more of a useridentity, a physician identity, physician area of practice, a clinicianidentity, a clinician area of practice, an insurance provider, a patientidentity, or a clinical history of a patient, associated with thecurrent search operation; constraining the current search operation to asubset of at least one codified terminology set based on the determinedsearch context information; performing, by a processor, the currentsearch operation by searching a database comprising the at least onecodified terminology set based at least in part upon the search term andhistorical search data comprising correlations between historical searchterms and corresponding selected search results, wherein thecorresponding selected search results are search results that wereselected in response to at least one previous search operation otherthan the current search operation, the previous search operation beingperformed using at least one of the corresponding historical searchterms, wherein searching the database comprises searching only thedetermined subset; determining one or more search results from thecurrent search operation, each search result comprising a codified termfrom the at least one codified terminology set; determining a relevancevalue for each search result; providing at least one search result basedupon the determined relevance values, wherein providing at least onesearch result comprises automatically selecting a search result having arelevance value satisfying a predefined threshold without requiring userselection of the search result.
 2. The method of claim 1, furthercomprising providing at least a portion of the search results to enableuser selection of a search result.
 3. The method of claim 2, whereinproviding the at least a portion of the search results comprisesproviding at least a portion of a description of each codified term inthe at least a portion of the search results.
 4. The method of claim 2,further comprising: determining a selected search result, the selectedsearch result selected from the at least a portion of the searchresults; and updating the historical search data based at least in partupon the search term and the selected search result.
 5. The method ofclaim 1, wherein providing at least one search result comprisesproviding at least a portion of the search results in an orderdetermined based on the relevance values.
 6. The method of claim 1,further comprising: determining whether there is a potential error inthe search term; and when there is a potential error in the search term:determining one or more suggested search terms based on the search term;providing the one or more suggested search terms; determining aselection of a suggested search term; and wherein searching the databasecomprises searching the database using the selected suggested searchterm.
 7. The method of claim 1, wherein the at least one codifiedterminology set comprises a codified clinical terminology set.
 8. Anapparatus for facilitating searching codified terminology sets, theapparatus comprising at least one processor, wherein the at least oneprocessor is configured to cause the apparatus to: determine a searchterm for performing a search operation; determining search contextinformation other than the search term for the current search operation,the search context information comprising one or more of a useridentity, a physician identity, physician area of practice, a clinicianidentity, a clinician area of practice, an insurance provider, a patientidentity, or a clinical history of a patient, associated with thecurrent search operation; constraining the current search operation to asubset of at least one codified terminology set based on the determinedsearch context information; perform the current search operation bysearching a database comprising at least one codified terminology setbased at least in part upon the search term and historical search datacomprising correlations between historical search terms andcorresponding selected search results, wherein the correspondingselected search results are search results that were selected inresponse to at least one previous search operation other than thecurrent search operation, the previous search operation being performedusing at least one of the corresponding historical search terms, whereinsearching the database comprises searching only the determined subset;determine one or more search results from the current search operation,each search result comprising a codified term from the at least onecodified terminology set; determine a relevance value for each searchresult; and provide at least one search result based upon the determinedrelevance values, wherein providing at least one search result comprisesautomatically selecting a search result having a relevance valuesatisfying a predefined threshold without requiring user selection ofthe search result.
 9. The apparatus of claim 8, wherein the at least oneprocessor is further configured to cause the apparatus to provide atleast a portion of the search results to enable user selection of asearch result.
 10. The apparatus of claim 9, wherein the at least oneprocessor is configured to cause the apparatus to provide at least aportion of the search results by providing at least a portion of adescription of each codified term in the at least a portion of thesearch results.
 11. The apparatus of claim 9, wherein the at least oneprocessor is further configured to cause the apparatus to: determine aselected search result, the selected search result selected from the atleast a portion of the search results; and update the historical searchdata based at least in part upon the search term and the selected searchresult.
 12. The apparatus of claim 8, wherein the at least one processoris configured to cause the apparatus to provide at least one searchresult by providing at least a portion of the search results in an orderdetermined based on the relevance values.
 13. The apparatus of claim 8,wherein the at least one processor is further configured to cause theapparatus to: determine whether there is a potential error in the searchterm; and when there is a potential error in the search term to:determine one or more suggested search terms based on the search term;provide the one or more suggested search terms; determine a selection ofa suggested search term; and search the database by searching thedatabase using the selected suggested search term.
 14. A computerprogram product comprising at least one computer-readable storage mediumhaving computer-readable program instructions stored therein, thecomputer-readable program instructions comprising: program instructionsconfigured to determine a search term for a current search operation;program instructions configured to determine search context informationother than the search term for the current search operation, the searchcontext information comprising one or more of a user identity, aphysician identity, physician area of practice, a clinician identity, aclinician area of practice, an insurance provider, a patient identity,or a clinical history of a patient, associated with the current searchoperation; program instructions configured to constrain the currentsearch operation to a subset of at least one codified terminology setbased on the determined search context information; program instructionsconfigured to perform the current search operation by searching adatabase comprising at least one codified terminology set based at leastin part upon the search term and historical search data comprisingcorrelations between historical search terms and corresponding selectedsearch results, wherein the corresponding selected search results aresearch results that were selected in response to at least one previoussearch operation other than the current search operation, the previoussearch operation being performed using at least one of the correspondinghistorical search terms, wherein searching the database comprisessearching only the determined subset; program instructions configured todetermine one or more search results from the current search operation,each search result comprising a codified term from the at least onecodified terminology set; program instructions configured to determine arelevance value for each search result; and program instructionsconfigured to provide at least one search result based upon thedetermined relevance values, wherein providing at least one searchresult comprises automatically selecting a search result having arelevance value satisfying a predefined threshold without requiring userselection of the search result.
 15. The computer program product ofclaim 14, further comprising: program instructions configured to provideat least a portion of the search results to enable user selection of asearch result; program instructions configured to determine a selectedsearch result; and program instructions configured to update thehistorical search data based at least in part upon the search term andthe selected search result.